The present invention relates to mass storage of computer systems. More-particularly, the invention relates to a write-behind enablement process which allows writing of data to multiple volumes of storage media associated with one or more server nodes in a distributed processing environment.
In a distributed client/server storage environment, a client process will send data for storage to a remote server node, which writes the data to the actual storage medium. The ability to write data to remote storage medium allows an application program to use hardware that is associated with processors other than the one the application program is running on. The sharing of hardware resources in this way is a main advantage of a distributed computing environment. In order to improve performance within such an environment, it is desirable that the client program write several blocks of data to the server node for storage before reading a response-from the server node to see if the transferred blocks of data have been written correctly. This technique of writing to the server node multiple blocks of data before confirming at a predetermined interval that the data has been correctly written is referred to as a xe2x80x9cwrite-behindxe2x80x9d function. With this function, communication overhead and delays between the client and server are minimized.
One difficulty with the write-behind process occurs because the client node does not continually check for status after sending each block of data. It will not be notified that the storage medium is full until the predetermined number of blocks have been sent to the server. Thus, the client node may only be notified of an end of volume condition after it has sent several additional blocks of data following the first block of data that would not fit in the storage medium.
One way that previous products have handled this problem is to require the client program to know the size of the storage medium before writing to it. As the client writes blocks of data to the storage medium, it knows that after a pre-specified number of blocks it must stop writing, and transition to a new storage medium. By doing this, the client never sends extra blocks to the server that cannot be written to the existing medium, and the problem is avoided.
There are two penalties for requiring the client to know the size of the storage media ahead of time. The first is that it is inconvenient to the programmer who must specify the storage medium size. The second is that in order to be safe, the maximum number of blocks is often not written to the storage medium. Thus, part of each storage medium may go unused.
In view of the above, a different approach to data transfer interfacing of the client and server nodes is desired.
Briefly summarized, in a first aspect the present invention comprises an article of manufacture which includes at least one computer usable medium having computer readable program code means embodied therein for storing data in a distributed processing system having multiple processors. One processor of the system is designated a client node and one or more other processors are designated server nodes. Each server node has at least one storage medium associated therewith. The computer readable program code means in the article of manufacture includes computer readable program code means for causing a computer to: (i) write blocks of data from a client process of the client node to a first storage medium of a first server node, the writing continuing until all blocks of data to be stored by the client process are written to the first storage medium or a physical end of storage is reached for the first storage medium, wherein the physical end of storage is reached without size of the first storage medium having been predetermined; (ii) switch writing blocks of data from the client node to a second storage medium of a second server node if the physical end of storage is reached for the first storage medium, wherein the switching writing is transparent to the client process; and (iii) adapt the writing of blocks of data from the client process of the client node to the first storage medium and to the second storage medium so that the writing comprises a write-behind operation, with the first server node and the second server node periodically notifying the client node whether previously received blocks of data have been correctly written to the first storage medium or the second storage medium, respectively.
In another aspect, the invention comprises an article of manufacture which includes at least one computer usable medium having computer readable program code means embodied therein for storing data in a distributed processing system having multiple processors. One processor of the system comprises a client node and one or more other processors comprise server nodes. Each server node has at least one storage medium associated therewith. The computer readable program code means in the article of manufacture includes computer readable program code means for causing a computer to: (i) write blocks of data from a client process of the client node to a first storage medium of the at least one storage medium associated with the first server node, the writing continuing until a physical end of the first storage medium is reached, wherein the physical end of the first storage medium is reached without having predetermined a size of the first storage medium; (ii) switch the writing of blocks of data to a second storage medium after the physical end of the first storage medium is reached, the second storage medium comprising a storage medium of the first server node or a storage medium of a second server node of the distributed processing system; (iii) adapt the writing of blocks of data to the first storage medium to comprise a write-behind operation wherein the first server node periodically notifies the client node whether previously received blocks of data have been written correctly to the first storage medium; and (iv) ascertain for the client process of the client node how many blocks of data were written to the first storage medium.
In a still further aspect, an article of manufacture is provided which includes at least one computer usable medium having computer readable program code means embodied therein for storing data in a distributed processing system having multiple processors. One processor of the system is designated a client node and one or more other processors comprise server nodes. Each server node has at least one storage medium associated therewith. The computer readable program code means in the article of manufacture includes computer readable program code means for causing a computer to: (i) write blocks of data from a client process of the client node to a first storage medium associated with a first server node of the distributed processing system, the writing continuing until a physical end of the first storage medium is reached, wherein the physical end of the first storage medium is reached without having predetermined a size of available storage in the first storage medium; (ii) write a header label to a second storage medium when the physical end of the first storage medium is reached, the second storage medium comprising a storage medium associated with the first server node or a storage medium associated with a second server node of the distributed processing system; (iii) switch the writing of blocks of data to the second storage medium when the physical end of the first storage medium is reached, wherein the header label precedes the writing of blocks of data to the second storage medium; and (iv) adapt the writing of blocks of data to the first storage medium so that the writing comprises a write-behind operation with the first server node periodically notifying the client node whether previously received blocks of data have been written correctly to the first storage medium.
The concepts presented herein produce numerous advantages over conventional client/server interfacing for a write-behind process in a distributed processing environment. First, enhanced flexibility is provided by allowing the client application to store blocks of data to storage media associated with different processors within the distributed environment. Thus, a client application may switch writing blocks of data from a first tape mounted on a first drive on a first processor to a second tape mounted on a second drive of a second processor in the distributed processing system. Further, with an application programming interface as described herein, it is possible for client programs to track exactly how many blocks of data have been written to each storage medium so that future access to a specific block of data on a specific storage medium is possible. Advantageously, enhanced flexibility is provided herein to the client application for the client program to write its own headers. The multi-volume data transfer process disclosed herein allows a client process to use the full capacity of the storage medium in a multiple tape volume backup without requiring prior knowledge on the size of each tape when writing the blocks of data. Thus, the present invention provides better storage performance within a distributed tape environment.